L1-032 Left-pad
题目 L1-032 Left-pad
思路分析
输入
getline
用法:getline(cin, stringVar);
目的:读取一整行文本,直到遇到换行符`\n`。`getline`会丢弃换行符,但会读取并保留行中的其他所有字符,**包括空格**。
场景:当你需要读取包含空格的一行文本或者确保一次读取直到行末尾时,`getline`是最佳选择。
注意:在getline之前使用cin或scanf读取其他数据,并且期望紧接着用getline读取下一行时,需要注意消耗掉留在输入缓冲区中的换行符
cin>>n;
getline(cin,s);
for(int i=0;i<n;i++){
getline(cin,s);
m[i]=s.size();
for(int j=0;j<m[i];j++){
if(isalpha(s[j])){
g[i][j]=1;
}
else{
g[i][j]=0;
}
}
}
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using Pll = pair<ll,ll>;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
const int inf = 0x3f3f3f3f;
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//如果满足长度n 截取原串中的最后n位
//如果不满足长度n ?是否可以简单判断需要补几位 输出几个tag 再输出原串
int n;char tag;cin>>n>>tag;
string os;//包含空格 需使用getline读一整行
getline(cin,os);//需要把缓冲区的换行读掉才能正常读入
getline(cin,os);//真正读入原串
// cout<<n<<endl<<tag<<endl<<os<<endl<<os.size()<<endl;
if(os.size()<n){
int need=n-os.size();
while(need--){
cout<<tag;
}
cout<<os;
}
//从size-n位置 截取n长度的子串
if(os.size()>=n){
int idx=os.size()-n;
string ans=os.substr(idx,n);
cout<<ans;
}
return 0;
}
同类题型
视频讲解
⬅️ L1-031 到底是不是太胖了 🏠 00-天梯赛 ➡️ L1-033 出生年
💬 评论